import router from '@/router'
import store from '@/store'
import { getJwtFromCookie, getJtiFromJwt } from '@/utils/jwt'

/**从cookie中得到登录的管理员id */
export function getAdminId() {
  const idAdmin = getJtiFromJwt(getJwtFromCookie())
  if (!idAdmin || idAdmin < 1) {
    router.push({ path: '/login' })
  } else {
    return Number(idAdmin)
  }
}

/** 在console打印 */
export function L(title, msg) {
  if (store.getters.flagConsoleLog) {
    console.log(title, msg)
  }
}

/** 获取assets内的文件
 * @param {String} url assets目录下的文件路径及文件名，字符串开始不包括/，例如："template/花名册.xls"
 * @returns nodejs环境下返回files://开头的路径
 */
export function getAssetsFile(url) {
  return new URL(`./assets/${url}`, import.meta.url).href
}

// js map转json
export function map2Json(map) {
  // 可以使用JSON.stringify()方法将Map转换为JSON格式的字符串
  // 但是直接使用JSON.stringify()方法会将Map转换为一个空对象，因为Map的键只能是字符串或者Symbol类型
  // 为了正确地将Map转换为JSON，需要先将Map转换为普通的对象，再将对象转换为JSON字符串。以下是代码示例：

  // 实现方式一：
  // const map = new Map()
  // map.set('key1', 'value1')
  // map.set('key2', 'value2')

  const obj = {}
  map.forEach((value, key) => {
    obj[key] = value
  })
  let jsonStr = JSON.stringify(obj)
  // console.log(jsonStr) // {"key1":"value1","key2":"value2"}

  // 实现方式二：
  // 可以使用Array.from()方法将Map转换为一个包含键值对的数组
  // 再使用JSON.stringify()方法将数组转换为JSON格式的字符串。以下是代码示例：

  // let arr = Array.from(map)
  // let jsonStr = JSON.stringify(arr)
  // console.log(jsonStr) // [["key1","value1"],["key2","value2"]]

  // 实现方式三：
  // 可以使用扩展运算符(...)将Map转换为一个包含键值对的数组
  // 再使用JSON.stringify()方法将数组转换为JSON格式的字符串。以下是代码示例：

  // let arr = [...map]
  // let jsonStr = JSON.stringify(arr)
  // console.log(jsonStr) // [["key1","value1"],["key2","value2"]]

  return jsonStr
}
